package com.hfb.mashibing.alip8.interview.j2se;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/** Q:线程池的种类，区别和使用场景
 * 1、CachedThreadPool
 *      无界同步线程池 自动回收线程 内部使用 SynchronousQueue
 *      适用：处理大量、耗时少的任务
 * 2、FixedThreadPool
 *      固定核心线程数的线程池，且这些核心线程不会被回收，内部使用 LinkedBlockingQueue
 *      适用：执行长期的任务，性能好很多
 * 3、SingleThreadExecutor
 *      单线程线程池
 *      适用：一个任务一个任务执行的场景
 * 4、ScheduledThreadPool
 *      定时、周期性任务的线程池 DelayedWorkQueue
 *
 *
 */
public class T03_ThreadPoolExecutor {

    public static void main(String[] args) {

        /**
         *      无界 内部使用 SynchronousQueue
         *      适用：处理大量、耗时少的任务
         */
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        /**
         *可重用固定线程数
         */
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
        /**
         * 单线程线程池
         */
        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
        /** 定时、周期性任务的线程池
         * DelayedWorkQueue
         */
        ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);


    }

}
